//package com.htl.reflection.test;
//
//import com.htl.reflection.entity.Fish;
//
//import java.lang.reflect.Constructor;
//
//public class Reflection__test2 {
//    public static void main(String[] args) throws Exception{
//        // 1、通过类名获取
//        Class clazz = Class.forName("com.htl.reflection.entity.Fish");
//        // 2、通过类字面量获取
//        Class clazz2 = Fish.class;
//        // 3、通过对象获取
//        Fish fish = new Fish();
//        Class clazz3 = fish.getClass();
//
//        System.out.println(clazz == clazz2);
//        System.out.println(clazz2 == clazz3);
//        System.out.println("-----------------------------------------");
//
//        // 获取类的名字（全类名）
//        System.out.println(clazz.getName());
//        // 获取父类的名字（全类名）
//        System.out.println(clazz.getSuperclass().getName());
//
//        // 获取实现的接口名
//        Class[] interfaces = clazz.getInterfaces();
//        System.out.println(interfaces);
//
//        for (Class anInterface : interfaces) {
//            System.out.println(anInterface);
//        }
//
//        // 获取类所在的包名
//        System.out.println(clazz.getPackageName());
//
//        // 获取无参构造
//        Constructor constructor = clazz.getConstructor(null);
//        System.out.println(constructor);
//
//        // 获取有参构造（根据参数列表的不同获取不同的构造器）
//        Constructor constructor1 = clazz.getConstructor(Integer.class,String.class);
//        System.out.println(constructor1);
//
//        // 获取所有构造器（返回一个构造器数组）
//        Constructor[] constructors = clazz.getConstructors();
//        for (Constructor cs : constructors) {
//            System.out.println(cs);
//        }
//
//        // 创建对象（无参）
//        Constructor<Fish> cs = clazz.getConstructor(null);
//        Fish fish1 = cs.newInstance(null);
//        System.out.println(fish1);
//
//        // 创建对象（有参）
//        Constructor<Fish> cs2 = clazz.getConstructor(Integer.class,String.class);
//        Fish fish2 = cs2.newInstance(1, "张三");
//        System.out.println(fish2);
//
//    }
//}
//
